package swing;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculadora extends JFrame {
    private JTextField display; // display deve ser acessível pelo manipulador

    public Calculadora() {
        super("Calculadora");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(200, 210);
        setResizable(false); // desabilita o redimencionato da janela

        // cria painel principal com divisões ao norte, sul, leste, oeste e centro
        JPanel jPPrincipal = new JPanel(new BorderLayout());
        // cria painel para os botões em grade
        JPanel jPBotoes = new JPanel(new GridLayout(4, 4));

        // coloca "display" ao norte do painel principal
        display = new JTextField("0");
        jPPrincipal.add(display, BorderLayout.NORTH);

        // coloca painel de botões no centro do painel principal
        jPPrincipal.add(jPBotoes, BorderLayout.CENTER);

        MouseAdapter manipulador = new ManipuladorBotoes(); // cria manipulador
        // adiciona cada um dos botões e os conecta ao manipulador
        jPBotoes.add(new JButton("7")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("8")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("9")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("+")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("4")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("5")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("6")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("-")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("1")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("2")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("3")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("*")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("AC")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("0")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("=")).addMouseListener(manipulador);
        jPBotoes.add(new JButton("/")).addMouseListener(manipulador);

        this.setContentPane(jPPrincipal);
        setVisible(true);
    }

    private class ManipuladorBotoes extends MouseAdapter {
        @Override
        public void mouseClicked(MouseEvent me) {
            JButton botao = (JButton) me.getSource(); // obtém origem do click
            if(botao.getText().equals("AC")) display.setText("");
            else display.setText(display.getText() + botao.getText()); // atualiza display
        }
    }

    public static void main(String[] a) {
        new Calculadora();
    }
}
